In recent years, enterprises have shifted much of their computing needs from localized computer systems to cloud computing providers. Cloud computing providers charge enterprises to store and run their applications and allow enterprises to purchase other computing services in much the same way utility customers purchase a service from a public utility. Cloud computing providers manage and maintain cloud computing facilities composed of servers, switches, routers, and mass data-storage devices interconnected by local-area networks, wide-area networks, wireless communications, and the Internet that may be distributed geographically or consolidated into data centers. Enterprises typically run their applications as virtual machines (“VMs”) in a cloud computing facility. A cloud computing provider typically provides an enterprise one or more virtual data centers (“VDCs”), each VDC composed of the enterprise's VMs. A VDC recreates the architecture and functionality of a physical data center for running an enterprise's VMs.
In a typical cloud computing facility, an enterprise's VMs typically share the same set of physical resources across a number server computers or hosts. In order to maximize resource utilization and profits, an IT manager may choose to provision more VMs than the physical capacity of the resources because not all of an enterprises VMs are expected to use all of the resources at the same time. This practice of provisioning more VMs than the capacity of the resources is called “over-commit” or “over-provision.” On the other hand, an IT manager may provision an enterprise's VMs with a plan to utilize less than the capacity of the resources. This practice is called “under-commit” or “under-provision” which is often used with enterprise VMs that have a fairly constant average resource utilization but need additional room for peak workloads from time to time. Service providers typically operate in a mix of over-commit or under-commit of VMs.
From a financial standpoint, it is important that unit rates of resources, such as cost per GHz for processors and cost per GB for memory and storage, can be used by enterprises in budgeting, planning, and show-back cost of VMs to their departments and enable cloud computing providers to determine a price for using their resources. When resource provisioning exactly matches the computational requirements of an enterprise's VMs, a unit rate may be the cost of the resource divided by the total capacity of the resource. However, it is uncommon for service providers to provision resources to exactly match the computational requirements of an enterprise's VMs in situations where resources are either under-committed or over-committed.